package aplicacion.modelo;
import java.awt.Point;

import titiritero.ObjetoVivo;
import titiritero.Posicionable;

public abstract class Personaje implements Posicionable, ObjetoVivo {
	private Point posicion;
	protected boolean estoyVivo;
	private Point posicionInicial;
	private int contadorGameloopsInicial;
	private int contadorGameloops;
	
	public Personaje(Point posicionInicial, int contadorGameloops){
		this.posicionInicial = posicionInicial;
		posicion = (Point) posicionInicial.clone();
		estoyVivo = true;
		
		contadorGameloops = contadorGameloopsInicial = contadorGameloops;
	}
	

	public void decrementarGameloops(int valor) {
		contadorGameloops -= valor;
	}
	
	public int getContadorGameloopsInicial() {
		return contadorGameloopsInicial;
	}
	
	public void reiniciarGameloops() {
		contadorGameloops = contadorGameloopsInicial;
	}
	
	public int getContadorGameloops(){
		return contadorGameloops;
	}
	
	public void setContadorGameloops(int valor){
		contadorGameloops = valor;
	}
	
	public Point getPosicionInicial(){
		return posicionInicial;		
	}

	public void restarVidas(){
		Juego.getInstance().restarVidas();
	}
	
	
	@Override
	public int getX() {
		return (int) this.getPosicion().getX();
	}


	@Override
	public int getY() {
		return (int) this.getPosicion().getY();
	}
	
	public boolean estoyVivo(){
		return estoyVivo;
	}
	
	public Point getPosicion(){
		return posicion;
	}
	
	public void setPosicion(Point posicion){
		this.posicion = posicion;
	}
	
	public abstract void morir();
	
	public void revivir(){
		this.posicion = (Point) this.posicionInicial.clone();
		this.estoyVivo = true;
	}
}